A computer network is a collection of interconnected computing devices that exchange data and share resources. In a packet-based network, such as the Internet, the computing devices communicate data by dividing the data into small blocks called packets. The packets are individually routed across the network from a source device to a destination device. The destination device extracts the data from the packets and assembles the data into its original form. Dividing the data into packets enables the source device to resend only those individual packets that may be lost during transmission.
Certain devices within the network, referred to as routers, maintain tables of routing information that describe available routes through the network. Each route defines a path between two locations on the network. Upon receiving an incoming data packet, the router examines header information within the packet to identify the destination for the packet. Based on the header information, the router accesses the routing table, selects an appropriate route for the packet and forwards the packet accordingly.
Conventional routers typically include a mechanism, referred to herein as a management interface, for directly or remotely configuring the router. By interacting with the management interface, various clients, such as human users and automated scripts, can perform a large number of configuration tasks. For example, the clients may configure interface cards of the router, adjust parameters for the supported network protocols, specify the physical components within the routing device, modify the routing information maintained by the router, access software modules and other resources residing on the router, and perform other configuration tasks.
In some routers, the management interface allows a client to configure the present operational configuration of the router using a commit-based model. In a commit-based model, a client issues one or more configuration commands, and then directs the management interface to apply the commands by issuing a “commit” command. Typically, the management interface maintains a copy of the operational configuration, i.e., a candidate configuration, to which the management interface applies the one or more configuration commands. Upon receiving a commit command, the management interface transfers changes made to the candidate configuration to the operational configuration.
In some instances, the management interface may validate the candidate configuration prior to transferring the changes. For example, the candidate configuration typically conforms to a defined standard, and the management interface checks the changed candidate configuration against syntactical and semantic rules specified by the standard. Thus, in verifying the changed candidate configuration, the management interface attempts to ensure that the changed candidate configuration is generally semantically and syntactically correct in view of the defined standard.
In the event the changed candidate configuration does not conform to one or more of the rules, the management interface typically issues errors or warnings to inform the client that the changed candidate configuration has violated one or more of the rules. If an error is found, the management interface may not transfer the changes to the operational configuration since the changed candidate configuration may cause the router to enter an unstable state. If a warning is found, the management interface may transfer the changes, but the router may not achieve optimal operation once the changes are transferred.
As the complexity of computing networks has increased, clients who manage these devices are subject to an increasing number of implementation-specific configuration options that vary depending on the specific needs of the networks within which the devices operate. For example, due to service level agreements, a network manager may require that certain routers be configured to route traffic along specific routes within a network to control bandwidth distribution within the network. As another example, a router may be configured to operate as an edge router, a service router, or a core router, and the configuration of the router may be tailored to each implementation.
Often the network manager defines implementation-specific configuration policies to which network devices must conform. These implementation-specific configuration policies are often conveyed to customers orally and/or via documents, memos, email and the like.
In some instances, a customer may inadvertently or intentionally configure a network device to violate the policies specified by the network manager. In these instances, a conventional commit-based verification process will not detect the misconfiguration, as the candidate configuration is often semantically and syntactically correct. As a result, the management interface may transfer the changes made to the candidate configuration to the operational configuration, allowing the network device to operate in a manner that violates implementation-specific configuration policies.